﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Entity.Framework;
using Business.Operations;

namespace HPDMAS.UserControls
{
    public partial class KullaniciIletisimBilgileri : System.Web.UI.UserControl
    {
        /// <summary>
        /// KullaniciId && SehirId bilgileri sayfaya "SESSION" ile gönderilecek.
        /// </summary>
        List<KullaniciIletisim> kullaniciIletisimListesi;
        private KullaniciIletisim k;
        public int kullaniciId;
        public int sehirId;
        List<string> kanGrubuListesi = new List<string>();
        /// <summary>
        /// Kontroller
        /// </summary>
        private DropDownList ddlOturduguIlce;
        public TextBox txtOturduguKoy;
        public TextBox txtPostaKodu;
        public TextBox txtEposta;
        public TextBox txtCepTel1;
        public TextBox txtCepTel2;
        public TextBox txtCepTel3;
        public TextBox txtEvTel;
        public TextBox txtIsTel;
        public TextBox txtFaxNo;
        public TextBox txtEvAdresi;
        public TextBox txtIsAdresi;
        public TextBox txtWebAdresi;
        public TextBox txtMeslek;
        private DropDownList ddlKanGrubu;
        public RadioButtonList rblCinsiyet;
        public CheckBox chbAskerlik;
        /// <summary>
        /// Kontrollere karşılık gelen değişkenler
        /// </summary>
        private string _cinsiyet;
        private string _kanGrubu;
        private bool _askerlikYapildiMi;
        private string _oturduguIlceAdi;
        private int _oturduguIlceId;

        protected void Page_Load(object sender, EventArgs e)
        {
            GelenIdDegeriIleEntityNesnesiniGetir();
            DetailsViewDoldur();
            DetailsViewIcindekiKontrollerinIdleriniGetir();
        }

        private void DetailsViewIcindekiKontrollerinIdleriniGetir()
        {
            ddlOturduguIlce = (DropDownList)this.dvKullaniciIletisimBilgileri.FindControl("ddlOturduguIlce");
            txtOturduguKoy = (TextBox)this.dvKullaniciIletisimBilgileri.FindControl("txtOturduguKoy");
            txtPostaKodu = (TextBox)this.dvKullaniciIletisimBilgileri.FindControl("txtPostaKodu");
            txtEposta = (TextBox)this.dvKullaniciIletisimBilgileri.FindControl("txtEposta");
            txtCepTel1 = (TextBox)this.dvKullaniciIletisimBilgileri.FindControl("txtCepTel1");
            txtCepTel2 = (TextBox)this.dvKullaniciIletisimBilgileri.FindControl("txtCepTel2");
            txtCepTel3 = (TextBox)this.dvKullaniciIletisimBilgileri.FindControl("txtCepTel3");
            txtEvTel = (TextBox)this.dvKullaniciIletisimBilgileri.FindControl("txtEvTel");
            txtIsTel = (TextBox)this.dvKullaniciIletisimBilgileri.FindControl("txtIsTel");
            txtFaxNo = (TextBox)this.dvKullaniciIletisimBilgileri.FindControl("txtFaxNo");
            txtEvAdresi = (TextBox)this.dvKullaniciIletisimBilgileri.FindControl("txtEvAdresi");
            txtIsAdresi = (TextBox)this.dvKullaniciIletisimBilgileri.FindControl("txtIsAdresi");
            txtWebAdresi = (TextBox)this.dvKullaniciIletisimBilgileri.FindControl("txtWebAdresi");
            txtMeslek = (TextBox)this.dvKullaniciIletisimBilgileri.FindControl("txtMeslek");
            ddlKanGrubu = (DropDownList)this.dvKullaniciIletisimBilgileri.FindControl("ddlKanGrubu");
            rblCinsiyet = (RadioButtonList)this.dvKullaniciIletisimBilgileri.FindControl("rblCinsiyet");
            chbAskerlik = (CheckBox)this.dvKullaniciIletisimBilgileri.FindControl("chbAskerlik");
        }

        private void GelenIdDegeriIleEntityNesnesiniGetir()
        {
            k = KullaniciIletisimOperation.KullaniciIletisimGetByKullaniciId(kullaniciId);
        }

        private void DetailsViewDoldur()
        {
            kullaniciIletisimListesi = new List<KullaniciIletisim>();
            kullaniciIletisimListesi.Add(k);
            dvKullaniciIletisimBilgileri.DataSource = kullaniciIletisimListesi;
            dvKullaniciIletisimBilgileri.DataBind();
        }

        protected void dvKullaniciIletisimBilgileri_ModeChanging(object sender, DetailsViewModeEventArgs e)
        {
            if (e.NewMode == DetailsViewMode.Edit)
            {
                dvKullaniciIletisimBilgileri.ChangeMode(DetailsViewMode.Edit);
            }
            else if (e.NewMode == DetailsViewMode.Insert)
            {
                dvKullaniciIletisimBilgileri.ChangeMode(DetailsViewMode.Insert);
            }
            else
            {
                dvKullaniciIletisimBilgileri.ChangeMode(DetailsViewMode.ReadOnly);
            }

            DetailsViewBind();
        }

        private void DetailsViewBind()
        {
            dvKullaniciIletisimBilgileri.DataBind();
        }

        protected void dvKullaniciIletisimBilgileri_DataBound(object sender, EventArgs e)
        {
            if (this.dvKullaniciIletisimBilgileri.CurrentMode == DetailsViewMode.Edit)
            {
                ddlOturduguIlce = (DropDownList)this.dvKullaniciIletisimBilgileri.FindControl("ddlOturduguIlce");
                if (ddlOturduguIlce != null)
                {
                    ddlOturduguIlceDoldur();
                    ddlOturduguIlce.SelectedValue = IlceOperation.IlceAdiGetByKullaniciId(kullaniciId);
                }

                ddlKanGrubu = (DropDownList)this.dvKullaniciIletisimBilgileri.FindControl("ddlKanGrubu");
                if (ddlKanGrubu != null)
                {
                    ddlKanGrubuDoldur();
                    ddlOturduguIlce.SelectedValue = KullaniciIletisimOperation.KanGrubuGetByKullaniciId(kullaniciId);
                }

                rblCinsiyet = (RadioButtonList)this.dvKullaniciIletisimBilgileri.FindControl("rblCinsiyet");
                if (rblCinsiyet != null)
                {
                    _cinsiyet = KullaniciIletisimOperation.CinsiyetGetByKullaniciId(kullaniciId);
                    if (_cinsiyet == "Bayan")
                    {
                        rblCinsiyet.Items.FindByText("Bayan").Selected = true;
                    }
                    else
                    {
                        rblCinsiyet.Items.FindByText("Bay").Selected = true;
                    }
                    rblCinsiyet.DataBind();
                }

                chbAskerlik = (CheckBox)this.dvKullaniciIletisimBilgileri.FindControl("chbAskerlik");
                if (chbAskerlik != null)
                {
                    _askerlikYapildiMi = KullaniciIletisimOperation.AskerlikYaptiMiGetByKullaniciId(kullaniciId);

                    if (_askerlikYapildiMi == true)
                    {
                        chbAskerlik.Checked = true;
                    }
                    else
                    {
                        chbAskerlik.Checked = false;
                    }

                    chbAskerlik.DataBind();
                }
            }
        }

        private void ddlKanGrubuDoldur()
        {
            kanGrubuListesi.Add("A Rh+");
            kanGrubuListesi.Add("B Rh+");
            kanGrubuListesi.Add("AB Rh+");
            kanGrubuListesi.Add("0 Rh+");
            kanGrubuListesi.Add("A Rh-");
            kanGrubuListesi.Add("B Rh-");
            kanGrubuListesi.Add("AB Rh-");
            kanGrubuListesi.Add("0 Rh-");
            ddlKanGrubu.DataSource = kanGrubuListesi;
            ddlKanGrubu.DataBind();
        }

        private void ddlOturduguIlceDoldur()
        {
            ddlOturduguIlce.DataSource = IlceOperation.IlceAdiGetBySehirId(Convert.ToString(sehirId));
            ddlOturduguIlce.DataBind();
        }

        protected void ddlKanGrubu_SelectedIndexChanged(object sender, EventArgs e)
        {
            _kanGrubu = ddlKanGrubu.SelectedItem.Value;
        }

        protected void dvKullaniciIletisimBilgileri_ItemUpdating(object sender, DetailsViewUpdateEventArgs e)
        {
            KullaniciIletisimBilgileriGuncelle();
            DuzenlemeModundanListelemeModunaGeç();
        }

        private void DuzenlemeModundanListelemeModunaGeç()
        {
            dvKullaniciIletisimBilgileri.ChangeMode(DetailsViewMode.ReadOnly);
            DetailsViewBind();
        }

        private void KullaniciIletisimBilgileriGuncelle()
        {
            _oturduguIlceAdi = ddlOturduguIlce.SelectedItem.Value;
            _oturduguIlceId = IlceOperation.IlceIdGetByIlceAdiAndSehirId(_oturduguIlceAdi, Convert.ToString(sehirId));
            _kanGrubu = ddlKanGrubu.SelectedItem.Value;

            k.KullaniciID = kullaniciId;
            k.IlceID = _oturduguIlceId;
            k.KullaniciOturduguKoy = txtOturduguKoy.Text.Trim();
            k.KullaniciPostaKodu = txtPostaKodu.Text.Trim();
            k.KullaniciEposta = txtEposta.Text.Trim();
            k.KullaniciCepTel1 = txtCepTel1.Text.Trim();
            k.KullaniciCepTel2 = txtCepTel2.Text.Trim();
            k.KullaniciCepTel3 = txtCepTel3.Text.Trim();
            k.KullaniciEvTel = txtEvTel.Text.Trim();
            k.KullaniciIsTel = txtIsTel.Text.Trim();
            k.KullaniciFaxNo = txtFaxNo.Text.Trim();
            k.KullaniciEvAdresi = txtEvAdresi.Text.Trim();
            k.KullaniciIsAdresi = txtIsAdresi.Text.Trim();
            k.KullaniciWebAdresi = txtWebAdresi.Text.Trim();
            k.KullaniciMeslek = txtMeslek.Text.Trim();
            k.KullaniciKanGrubu = _kanGrubu;
            k.KullaniciCinsiyet = Cinsiyet();
            k.KullaniciAskerlikYapildiMi = AskerlikYapildiMi();
            k.DegisiklikTarihi = DateTime.Now;
            KullaniciIletisimOperation.KullaniciIletisimUpdate(k);
        }

        private string Cinsiyet()
        {
            if (rblCinsiyet.SelectedItem.Value == "Bayan")
            {
                _cinsiyet = "Bayan";
            }
            else
            {
                _cinsiyet = "Bay";
            }
            return _cinsiyet;
        }

        private bool AskerlikYapildiMi()
        {
            if (chbAskerlik.Checked == true)
            {
                _askerlikYapildiMi = true;
            }
            else
            {
                _askerlikYapildiMi = false;
            }
            return _askerlikYapildiMi;
        }
    }
}